home *** CD-ROM | disk | FTP | other *** search
/ NeXT Enterprise Objects Framework 1.1 / NeXT Enterprise Objects Framework 1.1.iso / NextDeveloper / Headers / eointerface / NXTableView.h < prev    next >
Encoding:
Text File  |  1994-11-12  |  6.0 KB  |  259 lines

  1. /*
  2. **      NXTableView.h
  3. **      Copyright (c) 1992, NeXT Computer, Inc.  All rights reserved. 
  4. */
  5. #import <appkit/appkit.h>
  6. #import "NXTableProtocols.h"
  7.  
  8. // NXTableView is functionally identical to the Database Kit's
  9. // DBTableView. Please refer to the DatabaseKit documentation for use
  10. // of this class.
  11.  
  12. // These extend the selection modes from Matrix for NXTableView
  13. typedef int NXSelectionMode;
  14. #define NX_NOSELECT 5
  15.  
  16. // Other people appear to depend on this...
  17. #define NX_NoIndex 0xffffffff
  18.  
  19. @interface NXTableView : ScrollView
  20. {
  21. @private
  22.     struct {
  23.     unsigned int
  24. #if    __BIG_ENDIAN__
  25.             hideRows:1,
  26.             hideColumns:1,
  27.             editingAllowed:1,
  28.             dynamicRows:1,
  29.             dynamicColumns:1,
  30.             radioMode:1,
  31.             listMode:1,
  32.             allowEmpty:1,
  33.             gridVisible:1,
  34.             useArrowKeys:1,
  35.             allowsReordering:1,
  36.             allowsResizing:1,
  37.             unused:1,
  38.             clicks:3,
  39.             :16;
  40. #else    __BIG_ENDIAN__
  41.             :16,
  42.             clicks:3,
  43.             unused:1,
  44.             allowsResizing:1,
  45.             allowsReordering:1,
  46.             useArrowKeys:1,
  47.             gridVisible:1,
  48.             allowEmpty:1,
  49.             listMode:1,
  50.             radioMode:1,
  51.             dynamicColumns:1,
  52.             dynamicRows:1,
  53.             editingAllowed:1,
  54.             hideColumns:1,
  55.             hideRows:1;
  56. #endif    __BIG_ENDIAN__
  57.     } _tvFlags;
  58.     
  59.     unsigned int    _tvReserved[3];
  60.     unsigned int    _startVec,
  61.             _lastDragVec;
  62.     int        _lastSelVector;
  63.     id        _dragImage;
  64.  
  65.     id        _textFmt;        /* default formatters */
  66.     id        _editFmt;
  67.  
  68. @protected
  69.     id        dataSource;
  70.     id        delegate;        /* gets doubleClick message */
  71.     
  72.     id        rowLayout;        /* row/col layout info */
  73.     id        columnLayout;
  74.     id        rowHeading;        /* shows row/col headings */
  75.     id        columnHeading;
  76.     id        rowsClip;        /* clip views for headings */
  77.     id        columnsClip;
  78.     id        gridView;        /* the actual data view */
  79.     id        rowSel;
  80.     id        columnSel;
  81.     id        cornerView;        /* view in upper left corner */
  82.  
  83.     id        target;
  84.     SEL        doubleAction;
  85.     SEL        action;
  86. }
  87.  
  88. - initFrame:(const NXRect *) newFrame;
  89. - free;
  90.  
  91. - setDataSource:aSource;
  92. - dataSource;
  93.  
  94. - setDelegate:newDelegate;
  95. - delegate;
  96.  
  97. - (BOOL) dynamicRows;
  98. - (BOOL) dynamicColumns;
  99.  
  100. - setRowHeadingVisible: (BOOL) flag;
  101. - (BOOL) isRowHeadingVisible;
  102.  
  103. - setColumnHeadingVisible: (BOOL) flag;
  104. - (BOOL) isColumnHeadingVisible;
  105.  
  106. - setIntercell:(const NXSize *) aSize;
  107. - getIntercell:(NXSize *) theSize;
  108.  
  109. - setGridVisible:(BOOL) flag;
  110. - (BOOL) isGridVisible;
  111.  
  112. - acceptArrowKeys:(BOOL) flag;
  113. - (BOOL) doesAcceptArrowKeys;
  114.  
  115. - allowVectorReordering:(BOOL) flag;
  116. - (BOOL) doesAllowVectorReordering;
  117.  
  118. - allowVectorResizing:(BOOL) flag;
  119. - (BOOL) doesAllowVectorResizing;
  120.  
  121. - (BOOL) isHorizScrollerVisible;
  122. - setHorizScrollerRequired:(BOOL) flag;
  123. - (BOOL) isVertScrollerVisible;
  124. - setVertScrollerRequired:(BOOL) flag;
  125.  
  126. /*
  127.  *  Displaying the view
  128.  */
  129. - drawSelf:(const NXRect *) rects :(int) count;
  130.  
  131. /*
  132.  *  Handling rows/columns
  133.  */
  134. - columnList;
  135. - rowList;
  136.  
  137. - (unsigned int) columnCount;
  138. - (unsigned int) rowCount;
  139.  
  140. - (id <NXTableVectors>) rowAt:(unsigned int) aPosition;
  141. - (id <NXTableVectors>) columnAt:(unsigned int) aPosition;
  142.  
  143. - addColumn:identifier withTitle:(const char *) title;
  144. - addColumn:identifier withFormatter:formatter andTitle:(const char *) title at:(unsigned int) aPosition;
  145.  
  146. - addRow:identifier withTitle:(const char *) title;
  147. - addRow:identifier withFormatter:formatter andTitle:(const char *) title at:(unsigned int) aPosition;
  148.  
  149. - addColumn:aColumn at:(unsigned int) aPosition;
  150. - removeColumnAt:(unsigned int) aPosition;
  151.  
  152. - addRow:aRow at:(unsigned int) aPosition;
  153. - removeRowAt:(unsigned int) aPosition;
  154.  
  155. - (BOOL) moveColumnFrom:(unsigned int) oldPos to:(unsigned int) newPos;
  156. - (BOOL) moveRowFrom:(unsigned int) oldPos to:(unsigned int) newPos;
  157.  
  158. - formatterAt:(unsigned int) row :(unsigned int) column;
  159.  
  160. /*
  161.  *  Editing support.
  162.  */
  163. - editFieldAt:(unsigned int) row :(unsigned int) column;
  164. - setEditable:(BOOL) flag;
  165. - (BOOL) isEditable;
  166. - endEditing;
  167.  
  168. /*
  169.  *  Dealing with the selection
  170.  */
  171. - setMode:(int) newMode;
  172. - (int) mode;
  173.  
  174. - allowEmptySel:(BOOL) flag;
  175. - (BOOL) doesAllowEmptySel;
  176.  
  177. - (unsigned int) selectedRowCount;
  178. - (unsigned int) selectedColumnCount;
  179.  
  180. - (int) selectedRow;
  181. - (int) selectedColumn;
  182.  
  183. - (BOOL) isRowSelected:(unsigned int) row;    /* for either mode */
  184. - (BOOL) isColumnSelected:(unsigned int) column;
  185.  
  186. - deselectAll:sender;            /* for List mode selection */
  187. - selectAll:sender;
  188.  
  189. - setRowSelectionOn:(unsigned int) start :(unsigned int) end to:(BOOL) flag;
  190. - setColumnSelectionOn:(unsigned int) start :(unsigned int) end to:(BOOL) flag;
  191.  
  192. - selectRow:(unsigned int) row byExtension:(BOOL) flag;
  193. - selectColumn:(unsigned int) column byExtension:(BOOL) flag;
  194.  
  195. - deselectRow:(unsigned int) row;
  196. - deselectColumn:(unsigned int) column;
  197.  
  198. - (unsigned int) selectedRowAfter:(unsigned int) aRow;
  199. - (unsigned int) selectedColumnAfter:(unsigned int) aColumn;
  200.  
  201. - sendAction:(SEL) anAction to:anObject forSelectedRows:(BOOL) flag;
  202. - sendAction:(SEL) anAction to:anObject forSelectedColumns:(BOOL) flag;
  203.  
  204. /*
  205.  *  Setting and finding out about pieces of the table.
  206.  */
  207. - rowHeading;
  208. - setRowHeading:newRowHeading;
  209. - columnHeading;
  210. - setColumnHeading:newColumnHeading;
  211.  
  212. - (float)rowHeight;
  213. - setRowHeight:(float) rowHeight;
  214.  
  215. /*
  216.  *  Notifications of change
  217.  */
  218. - rowsChangedFrom:(unsigned int) startRow to:(unsigned int) endRow;
  219. - columnsChangedFrom:(unsigned int) startColumn to:(unsigned int) endColumn;
  220. - reloadData:sender;        /* update layout & redisplay all data */
  221. - layoutChanged:sender;        /* # rows, # cols or size changed */
  222.  
  223. /*
  224.  *  Scrolling and other view methods
  225.  */
  226. - scrollRowToVisible:(unsigned int) row;
  227. - scrollColumnToVisible:(unsigned int) column;
  228. - scrollClip:aClip to:(const NXPoint *)newOrigin;
  229. - sizeTo:(NXCoord) width:(NXCoord) height;
  230. - (BOOL) acceptsFirstResponder;
  231. - tile;
  232.  
  233. /*
  234.  *  Target and Action
  235.  */
  236. - setAction:(SEL)aSelector;
  237. - (SEL)action;
  238. - setDoubleAction:(SEL)aSelector;
  239. - (SEL)doubleAction;
  240. - setTarget:anObject;
  241. - target;
  242.  
  243. /*
  244.  *  Archiving
  245.  */
  246. - read:(NXTypedStream *) stream;
  247. - write:(NXTypedStream *) stream;
  248. - finishUnarchiving;
  249.  
  250. @end
  251.  
  252. @interface Object(NXTableViewDelegate)
  253. - tableViewDidChangeSelection:aTableView;
  254. - (BOOL) tableViewWillChangeSelection:aTableView;
  255. - tableView:sender movedColumnFrom:(unsigned int) old to:(unsigned int) new;
  256. - tableView:sender movedRowFrom:(unsigned int) old to:(unsigned int) new;
  257. @end
  258.  
  259.